flash unsigned char mon[]={0,10,11,9,11,10,10,9,9,9,8,9,9};
unsigned char  year,month,day;
//////////////////For Example :2008/02/08 --->1386/11/19  /////////////////////
year=8;
month=2;
day=8;
//////////////////////////////////////////////////////////////////////////
if(year%4==0 & month>2)day++;        //miladi leap year: increase day                                                       
if(year%4==1 && month==3 && day==20){day=30;month=12;goto yearcal;}  // shamsi leap year
if(year%4==1 && (month<3 || (month==3 && day<20)))day++;  // miladi leap year remain: increase day 
day=day+mon[month];             //calculate shmsi day     
month=month+9;                  //calculate shamsi month
if (month>12)month=month-12;    //adjust month  
if(month<7){if(day>31){day=day-31;month++;}} //adjust shamsi day with related month
if(month<12){if(day>30){day=day-30;month++;}}
if(month==12){if(day>29){day=day-29;month=1;}}
yearcal:		
year=year+79;                   //calculate shamsi year
if(year >= 100)year=year-100;   
if(year%4==3){if(month>10 || (month==10 && day>11 )) year--;}   //adjust shmasi year
else {if(month>10 || (month==10 && day>10 )) year--;} 